dsh-openwrite 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +107 -0
- package/THIRD_PARTY_NOTICES.md +33 -0
- package/assets/logo-dark.svg +31 -0
- package/assets/logo-light.svg +31 -0
- package/cordis.patch.yml +11 -0
- package/docs/BENCHMARK_TASKS.md +54 -0
- package/docs/COST_MEASUREMENT.md +39 -0
- package/docs/DEVELOPMENT.md +65 -0
- package/docs/DSH_STORE.md +58 -0
- package/docs/FRAMEWORK_ADVANTAGES.md +288 -0
- package/docs/IMPROVEMENT_PLAN.md +252 -0
- package/docs/INSTALL.md +99 -0
- package/docs/LEARNING.md +68 -0
- package/docs/OPEN_SOURCE_NOVEL_AUDIT.md +191 -0
- package/docs/PLUGIN_MAINTENANCE.md +54 -0
- package/docs/PLUGIN_MAINTENANCE_RC7.md +157 -0
- package/docs/QA_20260908.md +103 -0
- package/docs/QA_20260909_BENCHMARK.md +24 -0
- package/docs/RELEASE_ACCEPTANCE.md +116 -0
- package/docs/REVIEW_DAG_FRAMEWORK.md +82 -0
- package/docs/TARGETED_NOVEL_PROJECT_REVIEW.md +167 -0
- package/docs/WORKFLOWS.md +74 -0
- package/docs/WORKSPACE_CONTEXT_CONTRACT.md +125 -0
- package/docs/WORKSPACE_INTEGRATION_GOAL.md +278 -0
- package/docs/research/autosave-race-repro.mjs +133 -0
- package/docs/research/framework-stats-2026-09-05.json +116 -0
- package/dog-tools.mjs +11 -0
- package/package.json +132 -0
- package/packages/openwrite-bridge/LICENSE +201 -0
- package/packages/openwrite-bridge/cordis.patch.yml +10 -0
- package/packages/openwrite-bridge/lib/client.d.ts +95 -0
- package/packages/openwrite-bridge/lib/client.js +193 -0
- package/packages/openwrite-bridge/lib/contracts-generated.d.ts +367 -0
- package/packages/openwrite-bridge/lib/contracts-generated.js +1764 -0
- package/packages/openwrite-bridge/lib/dog-delivery.d.ts +12 -0
- package/packages/openwrite-bridge/lib/dog-delivery.js +362 -0
- package/packages/openwrite-bridge/lib/dog-review.d.ts +50 -0
- package/packages/openwrite-bridge/lib/dog-review.js +470 -0
- package/packages/openwrite-bridge/lib/domain.d.ts +70 -0
- package/packages/openwrite-bridge/lib/domain.js +496 -0
- package/packages/openwrite-bridge/lib/index.d.ts +17 -0
- package/packages/openwrite-bridge/lib/index.js +89 -0
- package/packages/openwrite-bridge/lib/managed-runtime.d.ts +95 -0
- package/packages/openwrite-bridge/lib/managed-runtime.js +510 -0
- package/packages/openwrite-bridge/lib/preset-tools.d.ts +13 -0
- package/packages/openwrite-bridge/lib/preset-tools.js +18 -0
- package/packages/openwrite-bridge/lib/tool-policy.d.ts +6 -0
- package/packages/openwrite-bridge/lib/tool-policy.js +56 -0
- package/packages/openwrite-bridge/lib/tools.d.ts +24 -0
- package/packages/openwrite-bridge/lib/tools.js +2404 -0
- package/packages/openwrite-bridge/package.json +67 -0
- package/packages/studio-panel/LICENSE +21 -0
- package/packages/studio-panel/README.md +51 -0
- package/packages/studio-panel/cordis.patch.yml +5 -0
- package/packages/studio-panel/lib/client.js +158087 -0
- package/packages/studio-panel/lib/client.js.map +1 -0
- package/packages/studio-panel/lib/index.js +50 -0
- package/packages/studio-panel/lib/types/client/AssetEditor.d.ts +122 -0
- package/packages/studio-panel/lib/types/client/AssetsView.d.ts +43 -0
- package/packages/studio-panel/lib/types/client/BenchmarkView.d.ts +9 -0
- package/packages/studio-panel/lib/types/client/ContinuousReader.d.ts +13 -0
- package/packages/studio-panel/lib/types/client/CreationView.d.ts +6 -0
- package/packages/studio-panel/lib/types/client/DagCanvas.d.ts +11 -0
- package/packages/studio-panel/lib/types/client/DiscardDraftDialog.d.ts +8 -0
- package/packages/studio-panel/lib/types/client/DomainToolCard.d.ts +9 -0
- package/packages/studio-panel/lib/types/client/GraphView.d.ts +46 -0
- package/packages/studio-panel/lib/types/client/HeaderChrome.d.ts +18 -0
- package/packages/studio-panel/lib/types/client/LaunchOpenWrite.d.ts +13 -0
- package/packages/studio-panel/lib/types/client/LibraryView.d.ts +6 -0
- package/packages/studio-panel/lib/types/client/MarkdownText.d.ts +3 -0
- package/packages/studio-panel/lib/types/client/ModelView.d.ts +9 -0
- package/packages/studio-panel/lib/types/client/OperationsView.d.ts +6 -0
- package/packages/studio-panel/lib/types/client/OutlinePlans.d.ts +37 -0
- package/packages/studio-panel/lib/types/client/OutlineView.d.ts +29 -0
- package/packages/studio-panel/lib/types/client/ResearchView.d.ts +7 -0
- package/packages/studio-panel/lib/types/client/ReviewCard.d.ts +28 -0
- package/packages/studio-panel/lib/types/client/SceneWorkbench.d.ts +55 -0
- package/packages/studio-panel/lib/types/client/SearchView.d.ts +33 -0
- package/packages/studio-panel/lib/types/client/TasksView.d.ts +11 -0
- package/packages/studio-panel/lib/types/client/TransferWorkspaces.d.ts +19 -0
- package/packages/studio-panel/lib/types/client/TurnMutationSummary.d.ts +62 -0
- package/packages/studio-panel/lib/types/client/VditorBody.d.ts +55 -0
- package/packages/studio-panel/lib/types/client/WorkbenchStore.d.ts +121 -0
- package/packages/studio-panel/lib/types/client/api.d.ts +72 -0
- package/packages/studio-panel/lib/types/client/asset-drafts.d.ts +20 -0
- package/packages/studio-panel/lib/types/client/benchmark-options.d.ts +43 -0
- package/packages/studio-panel/lib/types/client/draft-store.d.ts +26 -0
- package/packages/studio-panel/lib/types/client/dto.d.ts +517 -0
- package/packages/studio-panel/lib/types/client/index.d.ts +4 -0
- package/packages/studio-panel/lib/types/client/locales.d.ts +15 -0
- package/packages/studio-panel/lib/types/client/manuscript-annotations.d.ts +59 -0
- package/packages/studio-panel/lib/types/client/manuscript-markers.d.ts +61 -0
- package/packages/studio-panel/lib/types/client/manuscript-mentions.d.ts +30 -0
- package/packages/studio-panel/lib/types/client/manuscript-overlay-dom.d.ts +7 -0
- package/packages/studio-panel/lib/types/client/manuscript-overlay.d.ts +42 -0
- package/packages/studio-panel/lib/types/client/manuscript-selection.d.ts +59 -0
- package/packages/studio-panel/lib/types/client/model-view-memory.d.ts +17 -0
- package/packages/studio-panel/lib/types/client/storage.d.ts +8 -0
- package/packages/studio-panel/lib/types/client/workbench-epochs.d.ts +16 -0
- package/packages/studio-panel/lib/types/client/workspace-context.d.ts +52 -0
- package/packages/studio-panel/lib/types/client/writing-scope.d.ts +7 -0
- package/packages/studio-panel/lib/types/index.d.ts +5 -0
- package/packages/studio-panel/package.json +105 -0
- package/packages/studio-panel/vendor/vditor/LICENSE +21 -0
- package/packages/studio-panel/vendor/vditor/dist/css/content-theme/dark.css +123 -0
- package/packages/studio-panel/vendor/vditor/dist/css/content-theme/light.css +101 -0
- package/packages/studio-panel/vendor/vditor/dist/index.css +1823 -0
- package/packages/studio-panel/vendor/vditor/dist/index.min.js +1 -0
- package/packages/studio-panel/vendor/vditor/dist/js/i18n/zh_CN.js +86 -0
- package/packages/studio-panel/vendor/vditor/dist/js/icons/ant.js +174 -0
- package/packages/studio-panel/vendor/vditor/dist/js/lute/lute.min.js +72 -0
- package/plugin.d.ts +3 -0
- package/plugin.mjs +80 -0
- package/presets/README.md +32 -0
- package/presets/openwrite/agent.cordis.yml +317 -0
- package/presets/openwrite/preset.yml +3 -0
- package/presets/openwrite/skills/canon/SKILL.md +15 -0
- package/presets/openwrite/skills/dialoguequality/SKILL.md +166 -0
- package/presets/openwrite/skills/dog-delivery-query/SKILL.md +40 -0
- package/presets/openwrite/skills/dog-import-query/SKILL.md +27 -0
- package/presets/openwrite/skills/dog-review-query/SKILL.md +40 -0
- package/presets/openwrite/skills/export-book/SKILL.md +14 -0
- package/presets/openwrite/skills/foreshadow/SKILL.md +14 -0
- package/presets/openwrite/skills/foreshadowing-system/SKILL.md +125 -0
- package/presets/openwrite/skills/learn/SKILL.md +24 -0
- package/presets/openwrite/skills/novel-creator/SKILL.md +88 -0
- package/presets/openwrite/skills/novel-creator/templates/beat_templates.yaml +179 -0
- package/presets/openwrite/skills/novel-creator/templates/example_usage.yaml +74 -0
- package/presets/openwrite/skills/novel-reviewer/SKILL.md +85 -0
- package/presets/openwrite/skills/oh-story-deslop/LICENSE +21 -0
- package/presets/openwrite/skills/oh-story-deslop/SKILL.md +36 -0
- package/presets/openwrite/skills/oh-story-deslop/agents/openai.yaml +4 -0
- package/presets/openwrite/skills/oh-story-deslop/references/method.md +22 -0
- package/presets/openwrite/skills/oh-story-long-analyze/LICENSE +21 -0
- package/presets/openwrite/skills/oh-story-long-analyze/SKILL.md +37 -0
- package/presets/openwrite/skills/oh-story-long-analyze/agents/openai.yaml +4 -0
- package/presets/openwrite/skills/oh-story-long-analyze/references/method.md +22 -0
- package/presets/openwrite/skills/oh-story-long-scan/LICENSE +21 -0
- package/presets/openwrite/skills/oh-story-long-scan/SKILL.md +36 -0
- package/presets/openwrite/skills/oh-story-long-scan/agents/openai.yaml +4 -0
- package/presets/openwrite/skills/oh-story-long-scan/references/method.md +21 -0
- package/presets/openwrite/skills/oh-story-long-write/LICENSE +21 -0
- package/presets/openwrite/skills/oh-story-long-write/SKILL.md +37 -0
- package/presets/openwrite/skills/oh-story-long-write/agents/openai.yaml +4 -0
- package/presets/openwrite/skills/oh-story-long-write/references/method.md +33 -0
- package/presets/openwrite/skills/oh-story-review/LICENSE +21 -0
- package/presets/openwrite/skills/oh-story-review/SKILL.md +36 -0
- package/presets/openwrite/skills/oh-story-review/agents/openai.yaml +4 -0
- package/presets/openwrite/skills/oh-story-review/references/method.md +25 -0
- package/presets/openwrite/skills/progress/SKILL.md +16 -0
- package/presets/openwrite/skills/review-chapter/SKILL.md +17 -0
- package/presets/openwrite/skills/revise-span/SKILL.md +16 -0
- package/presets/openwrite/skills/style-system/SKILL.md +135 -0
- package/presets/openwrite/skills/style-system/prompts/analyze_style.md +214 -0
- package/presets/openwrite/skills/style-system/prompts/batch_extract_style.md +66 -0
- package/presets/openwrite/skills/style-system/prompts/compose_style.md +83 -0
- package/presets/openwrite/skills/style-system/prompts/extract_style.md +84 -0
- package/presets/openwrite/skills/style-system/prompts/initialize_style.md +52 -0
- package/presets/openwrite/skills/style-system/templates/analysis_report.yaml +78 -0
- package/presets/openwrite/skills/style-system/templates/composed_style.md +96 -0
- package/presets/openwrite/skills/style-system/templates/extraction_report.yaml +80 -0
- package/presets/openwrite/skills/style-system/templates/fingerprint.yaml +61 -0
- package/presets/openwrite/skills/style-system/tools/README.md +33 -0
- package/presets/openwrite/skills/truth-validation/SKILL.md +119 -0
- package/presets/openwrite/skills/workflow-manager/SKILL.md +81 -0
- package/presets/openwrite/skills/world-query/SKILL.md +45 -0
- package/presets/openwrite/skills/write-next/SKILL.md +17 -0
- package/release/core-requirements.in +12 -0
- package/release/licenses/@deepseek-ai__cosmokit@1.8.3/LICENSE +21 -0
- package/release/licenses/@deepseek-ai__schemastery@3.18.2/LICENSE +21 -0
- package/release/licenses/@isaacs__fs-minipass@4.0.1/LICENSE +15 -0
- package/release/licenses/@standard-schema__spec@1.1.0/LICENSE +21 -0
- package/release/licenses/@types__d3-color@3.1.3/LICENSE +21 -0
- package/release/licenses/@types__d3-drag@3.0.7/LICENSE +21 -0
- package/release/licenses/@types__d3-interpolate@3.0.4/LICENSE +21 -0
- package/release/licenses/@types__d3-selection@3.0.11/LICENSE +21 -0
- package/release/licenses/@types__d3-transition@3.0.9/LICENSE +21 -0
- package/release/licenses/@types__d3-zoom@3.0.8/LICENSE +21 -0
- package/release/licenses/@xyflow__react@12.11.6/LICENSE +21 -0
- package/release/licenses/@xyflow__system@0.0.82/LICENSE +21 -0
- package/release/licenses/ajv-formats@3.0.1/LICENSE +21 -0
- package/release/licenses/ajv@8.20.0/LICENSE +22 -0
- package/release/licenses/chownr@3.0.0/LICENSE.md +63 -0
- package/release/licenses/classcat@5.0.5/LICENSE.md +7 -0
- package/release/licenses/commander@7.2.0/LICENSE +22 -0
- package/release/licenses/d3-array@3.2.4/LICENSE +13 -0
- package/release/licenses/d3-axis@3.0.0/LICENSE +13 -0
- package/release/licenses/d3-brush@3.0.0/LICENSE +13 -0
- package/release/licenses/d3-chord@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-color@3.1.0/LICENSE +13 -0
- package/release/licenses/d3-contour@4.0.2/LICENSE +13 -0
- package/release/licenses/d3-delaunay@6.0.4/LICENSE +14 -0
- package/release/licenses/d3-dispatch@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-drag@3.0.0/LICENSE +13 -0
- package/release/licenses/d3-dsv@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-ease@3.0.1/LICENSE +28 -0
- package/release/licenses/d3-fetch@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-force@3.0.0/LICENSE +13 -0
- package/release/licenses/d3-format@3.1.2/LICENSE +13 -0
- package/release/licenses/d3-geo@3.1.1/LICENSE +34 -0
- package/release/licenses/d3-hierarchy@3.1.2/LICENSE +13 -0
- package/release/licenses/d3-interpolate@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-path@3.1.0/LICENSE +13 -0
- package/release/licenses/d3-polygon@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-quadtree@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-random@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-scale-chromatic@3.1.0/LICENSE +28 -0
- package/release/licenses/d3-scale@4.0.2/LICENSE +13 -0
- package/release/licenses/d3-selection@3.0.0/LICENSE +13 -0
- package/release/licenses/d3-shape@3.2.0/LICENSE +13 -0
- package/release/licenses/d3-time-format@4.1.0/LICENSE +13 -0
- package/release/licenses/d3-time@3.1.0/LICENSE +13 -0
- package/release/licenses/d3-timer@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-transition@3.0.1/LICENSE +13 -0
- package/release/licenses/d3-zoom@3.0.0/LICENSE +13 -0
- package/release/licenses/d3@7.9.0/LICENSE +13 -0
- package/release/licenses/delaunator@5.1.0/LICENSE +15 -0
- package/release/licenses/elkjs@0.12.0/LICENSE.md +263 -0
- package/release/licenses/fast-deep-equal@3.1.3/LICENSE +21 -0
- package/release/licenses/fast-uri@3.1.7/LICENSE +30 -0
- package/release/licenses/fflate@0.8.2/LICENSE +21 -0
- package/release/licenses/graceful-fs@4.2.11/LICENSE +15 -0
- package/release/licenses/iconv-lite@0.6.3/LICENSE +21 -0
- package/release/licenses/internmap@2.0.3/LICENSE +13 -0
- package/release/licenses/json-schema-traverse@1.0.0/LICENSE +21 -0
- package/release/licenses/lucide-react@0.468.0/LICENSE +15 -0
- package/release/licenses/minipass@7.1.3/LICENSE.md +55 -0
- package/release/licenses/minizlib@3.1.0/LICENSE +26 -0
- package/release/licenses/proper-lockfile@4.1.2/LICENSE +21 -0
- package/release/licenses/require-from-string@2.0.2/license +21 -0
- package/release/licenses/retry@0.12.0/License +21 -0
- package/release/licenses/robust-predicates@3.0.3/LICENSE +24 -0
- package/release/licenses/rw@1.3.3/LICENSE +26 -0
- package/release/licenses/safer-buffer@2.1.2/LICENSE +21 -0
- package/release/licenses/signal-exit@3.0.7/LICENSE.txt +16 -0
- package/release/licenses/tar@7.5.7/LICENSE.md +55 -0
- package/release/licenses/use-sync-external-store@1.6.0/LICENSE +21 -0
- package/release/licenses/yallist@5.0.0/LICENSE.md +63 -0
- package/release/licenses/zustand@4.5.7/LICENSE +21 -0
- package/release/openwrite-5.8.1-py3-none-any.whl +0 -0
- package/release/platform-overrides.in +5 -0
- package/release/python-constraints.in +96 -0
- package/release/requirements.lock +2927 -0
- package/release/runtime-manifest.json +98 -0
- package/release/sdk-compatibility.json +240 -0
- package/release/source.json +859 -0
- package/release/wheels/cryptography-50.0.1-cp312-abi3-macosx_13_0_x86_64.whl +0 -0
- package/release/wheels/licenses/LICENSE.txt +177 -0
- package/release/wheels/provenance.json +15 -0
- package/scripts/dog/delivery-stage.js +32 -0
- package/scripts/dog/import-chapter.js +20 -0
- package/scripts/dog/import-record.js +35 -0
- package/scripts/dog/review-dimension.js +41 -0
- package/scripts/dog/review-record.js +42 -0
- package/scripts/maintenance.mjs +179 -0
- package/scripts/prepare.mjs +21 -0
- package/vendor/dsh-dog/LICENSE +29 -0
- package/vendor/dsh-dog/README.md +114 -0
- package/vendor/dsh-dog/UPSTREAM.md +22 -0
- package/vendor/dsh-dog/cordis.patch.yml +14 -0
- package/vendor/dsh-dog/lib/client.js +2898 -0
- package/vendor/dsh-dog/lib/client.js.map +1 -0
- package/vendor/dsh-dog/lib/core-BiEBMLz3.d.ts +495 -0
- package/vendor/dsh-dog/lib/core-DdfMcrB4.js +2074 -0
- package/vendor/dsh-dog/lib/core.d.ts +2 -0
- package/vendor/dsh-dog/lib/core.js +2 -0
- package/vendor/dsh-dog/lib/index.d.ts +133 -0
- package/vendor/dsh-dog/lib/index.js +967 -0
- package/vendor/dsh-dog/package.json +97 -0
- package/vendor/dsh-dog/schemas/schema-0.2/graph.schema.json +139 -0
- package/vendor/dsh-dog/schemas/schema-0.2/report.schema.json +87 -0
- package/vendor/dsh-dog/schemas/schema-0.2/run.schema.json +259 -0
- package/vendor/dsh-dog/schemas/schema-0.2/runtime-event.schema.json +105 -0
- package/vendor/dsh-dog/schemas/schema-0.2/verification.schema.json +40 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright [yyyy] [name of copyright owner]
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.svg">
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="assets/logo-light.svg">
|
|
5
|
+
<img src="assets/logo-light.svg" width="312" alt="OpenWrite">
|
|
6
|
+
</picture>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<h1 align="center">dsh-Openwrite</h1>
|
|
10
|
+
<p align="center">在 DeepSeek Harness 中规划、写作、审稿和管理长篇小说。</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="package.json"><img src="https://img.shields.io/badge/dsh-0.1.2--rc.1-2563eb" alt="dsh 0.1.2-rc.1"></a>
|
|
14
|
+
<a href="package.json"><img src="https://img.shields.io/badge/Node-%E2%89%A522.19-15803d" alt="Node >= 22.19"></a>
|
|
15
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-0f766e" alt="Apache-2.0"></a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="#快速安装">快速安装</a> ·
|
|
20
|
+
<a href="#开始使用">开始使用</a> ·
|
|
21
|
+
<a href="#功能">功能</a> ·
|
|
22
|
+
<a href="#文档与开发">文档</a> ·
|
|
23
|
+
<a href="https://github.com/LiPu-jpg/Openwrite/issues">反馈问题</a>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
这是 [OpenWrite](https://github.com/LiPu-jpg/Openwrite/tree/native-core) 的 dsh 插件版本。
|
|
27
|
+
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 提供 Agent 与交互界面,OpenWrite Core 提供小说领域能力;人物、设定、大纲、正文和评审保存在本地作品目录。
|
|
28
|
+
|
|
29
|
+
## 快速安装
|
|
30
|
+
|
|
31
|
+
**0.2.7 标准插件包**兼容 dsh **0.1.2-rc.1**。可下载版本、三平台验收结果和 SHA-256 以 [GitHub Release](https://github.com/LiPu-jpg/Openwrite/releases/tag/v0.2.7) 附件为准;验收方法见 [发布验收](docs/RELEASE_ACCEPTANCE.md)。默认使用 npm `latest` 渠道;商城所需的精确预览版兼容性、验证范围和安装限制见 [DSH STORE 接入](docs/DSH_STORE.md)。
|
|
32
|
+
|
|
33
|
+
已有匹配版本 dsh 的用户执行:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
dsh plugin --profile web add -w https://github.com/LiPu-jpg/Openwrite/releases/download/v0.2.7/dsh-openwrite-0.2.7.tgz
|
|
37
|
+
dsh web
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
也可把这段话交给有终端权限的 Agent:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
请按 https://github.com/LiPu-jpg/Openwrite 的 README 和对应 Release 安装 OpenWrite。
|
|
44
|
+
先核对 Release 验收结果、精确 dsh 版本和 SHA-256,再安装发布的 .tgz。
|
|
45
|
+
已有本地安装先备份并迁移,保留作品、自定义预设、凭据和其他插件。
|
|
46
|
+
启动 dsh web,指导我点击 OpenWrite、准备环境并选择自己的作品。
|
|
47
|
+
不要调用写作模型做安装检查,不要自动升级宿主或放宽 pnpm 构建授权。
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
首次使用会下载固定版本的 uv、Python 3.12 和锁定依赖,保存在当前 dsh 的专属目录。无需预装 Python,也无需克隆两个分支。目标平台为 macOS arm64/x64、Linux x64、Windows x64;各平台通过情况以发布验收报告为准。模型费用另计。
|
|
51
|
+
|
|
52
|
+
具体的源码安装、升级、迁移和卸载见 [安装指南](docs/INSTALL.md)。
|
|
53
|
+
|
|
54
|
+
## 开始使用
|
|
55
|
+
|
|
56
|
+
1. 执行 `dsh web`,打开它给出的浏览器地址,点击侧栏 **OpenWrite**。等待环境就绪后,选择作品目录。
|
|
57
|
+
2. 入口自动建立 **OpenWrite 创作** 会话;点击 **创作** 即可打开工作台,无需先发消息。对话模型在 dsh 中配置;小说生成与评审模型在「任务 → 模型」配置。
|
|
58
|
+
3. 和 Agent 讨论题材、人物与大纲,确认后再开始写章。已有旧稿可通过「任务 → 导入与导出」接入。
|
|
59
|
+
|
|
60
|
+
| 日常操作 | 入口 |
|
|
61
|
+
|---|---|
|
|
62
|
+
| 看进度、继续写作 | `/progress`、`/write-next` |
|
|
63
|
+
| 审稿、修改选段 | `/review-chapter`、`/revise-span` |
|
|
64
|
+
| 查伏笔、设定与写法记忆 | `/foreshadow`、`/canon`、`/learn` |
|
|
65
|
+
| 导出成稿 | `/export-book` 或「任务 → 导入与导出」 |
|
|
66
|
+
|
|
67
|
+
已有会话不会自动切换预设。详细操作与工作区规则见 [使用流程](docs/WORKFLOWS.md)。
|
|
68
|
+
|
|
69
|
+
## 功能
|
|
70
|
+
|
|
71
|
+
| 工作环节 | 可以做什么 |
|
|
72
|
+
|---|---|
|
|
73
|
+
| **规划与资料** | 在同一创作会话中整理灵感、人物、世界观、分层大纲与伏笔,维护作品设定。 |
|
|
74
|
+
| **正文创作** | 章节导航、连续审读、正文编辑、选区批注与着色、内部状态/关系标记、自动保存、版本保护与场景结构管理。 |
|
|
75
|
+
| **审稿与修订** | 六域评审、问题定位、修订差异和复评;通过 DAG 查看流程、依赖及证据。 |
|
|
76
|
+
| **模型测试** | 测章节写作或指定范围的大纲设计,多模型独立生成与交叉评审,查看质量、可靠性和费用;候选保存在隔离副本。 |
|
|
77
|
+
| **研究与检索** | 检索作品资料与参考库,管理研究报告、正典和写作记忆。 |
|
|
78
|
+
| **导入与成书** | 旧稿导入、作品迁移、完整备份,以及 Markdown / TXT / EPUB 导出。 |
|
|
79
|
+
|
|
80
|
+
「创作 / 资料 / 任务」是三个主要工作台。OpenWrite Studio 在本版本中作为领域后端运行,日常操作在 dsh 中完成。
|
|
81
|
+
|
|
82
|
+
## 文档与开发
|
|
83
|
+
|
|
84
|
+
| 文档 | 内容 |
|
|
85
|
+
|---|---|
|
|
86
|
+
| [安装指南](docs/INSTALL.md) | Agent 安装步骤、手动安装、模型配置、升级和排错 |
|
|
87
|
+
| [使用流程](docs/WORKFLOWS.md) | Workspace、规划、写章、审稿、修订、导入导出 |
|
|
88
|
+
| [模型测试](docs/BENCHMARK_TASKS.md) | 章节选择、大纲范围、任务 DAG 和结果解读 |
|
|
89
|
+
| [审稿 DAG](docs/REVIEW_DAG_FRAMEWORK.md) | 标准评审框架与证据结构 |
|
|
90
|
+
| [工程说明](docs/DEVELOPMENT.md) | 组件职责、维护命令、调研和改进记录 |
|
|
91
|
+
| [维护手册](docs/PLUGIN_MAINTENANCE.md) · [架构设计](DESIGN.md) | 版本、插件契约、安装维护和跨仓库职责 |
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
packages/openwrite-bridge/ 小说工具与后端桥接
|
|
95
|
+
packages/studio-panel/ dsh 原生工作台
|
|
96
|
+
presets/openwrite/ OpenWrite 创作预设与技能
|
|
97
|
+
scripts/ 安装、启动、检查与 DoG 适配
|
|
98
|
+
conductor/ 连续写章、评审与修订编排
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
开发检查:`npm run check:plugin`;跨仓库契约检查:`npm run check`。
|
|
102
|
+
小说核心位于同仓库的 [`native-core` 分支](https://github.com/LiPu-jpg/Openwrite/tree/native-core),与本分支分别维护。工程进度与验证记录保留在 [GOAL.md](GOAL.md)。
|
|
103
|
+
|
|
104
|
+
## 许可与来源
|
|
105
|
+
|
|
106
|
+
项目采用 [Apache-2.0](LICENSE)。`oh-story-*` 技能和随包编辑器保留各自目录中的原有许可证。
|
|
107
|
+
Logo 基于 OpenWrite `native-core` 分支,已调整深浅主题配色;基于 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness),图谱集成使用 [dsh-dog](https://github.com/Fun10165/dsh-dog)。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Third-party components
|
|
2
|
+
|
|
3
|
+
OpenWrite is Apache-2.0. The separately maintained Studio panel retains its MIT
|
|
4
|
+
license. DoG is based on Fun10165/dsh-dog v1.2.0, BSD-3-Clause; its full license
|
|
5
|
+
and integration changes are in vendor/dsh-dog/LICENSE and UPSTREAM.md.
|
|
6
|
+
|
|
7
|
+
The editor ships Vditor and its auxiliary files with the upstream license in
|
|
8
|
+
packages/studio-panel/vendor/vditor/LICENSE. OpenWrite preset skills retain
|
|
9
|
+
their source licenses beside their SKILL.md files.
|
|
10
|
+
|
|
11
|
+
The release runtime manifest pins uv (MIT/Apache-2.0) and the Astral
|
|
12
|
+
python-build-standalone Python distribution (Python and bundled component
|
|
13
|
+
licenses). Archives are downloaded only on environment preparation and retain
|
|
14
|
+
their license files. URLs and SHA-256 values are in release/runtime-manifest.json.
|
|
15
|
+
|
|
16
|
+
Python dependency versions and distribution hashes are in release/requirements.lock.
|
|
17
|
+
JavaScript dependency versions, resolved origins and integrity values are in the
|
|
18
|
+
repository lockfiles. Host React, Cordis and dsh services are provided by dsh;
|
|
19
|
+
they are not inlined into the plugin's browser code.
|
|
20
|
+
|
|
21
|
+
The release includes an OpenWrite-built cryptography 50.0.1 wheel for macOS
|
|
22
|
+
x86_64 because upstream discontinued Intel Mac wheels. It is built from the
|
|
23
|
+
SHA-256 pinned upstream source with statically linked OpenSSL 3.6.3. The wheel
|
|
24
|
+
retains upstream licenses; OpenSSL's full license is in release/wheels/licenses.
|
|
25
|
+
Source hash, toolchain, linkage inspection and the native CI build URL are in
|
|
26
|
+
release/wheels/provenance.json. No cryptography source code was modified.
|
|
27
|
+
|
|
28
|
+
Intel Macs use the last official ONNX Runtime Intel wheel, 1.23.2; other
|
|
29
|
+
platforms use 1.29.0. Platform markers and distribution hashes are recorded in
|
|
30
|
+
release/requirements.lock and release/platform-overrides.in.
|
|
31
|
+
|
|
32
|
+
JavaScript runtime dependency license texts are retained in release/licenses,
|
|
33
|
+
with names, versions and upstream repositories in release/source.json.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="312" height="100" viewBox="0 0 312 100" fill="none" role="img" aria-labelledby="logo-title logo-description">
|
|
2
|
+
<title id="logo-title">OpenWrite</title>
|
|
3
|
+
<desc id="logo-description">An open book and quill beside the OpenWrite wordmark. Dark background version.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="quill" x1="46" y1="70" x2="80" y2="22" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop stop-color="#8AB6F5"/>
|
|
7
|
+
<stop offset="1" stop-color="#6398E3"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="wordmark" x1="192" y1="34" x2="302" y2="62" gradientUnits="userSpaceOnUse">
|
|
10
|
+
<stop stop-color="#8AB6F5"/>
|
|
11
|
+
<stop offset="1" stop-color="#6398E3"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
</defs>
|
|
14
|
+
<g stroke-linecap="round" stroke-linejoin="round">
|
|
15
|
+
<path d="M20 36C20 28 32 25 50 34C68 25 80 28 80 36V70C80 78 68 81 50 72C32 81 20 78 20 70V36Z" fill="#182433" stroke="#7B91AC" stroke-width="2"/>
|
|
16
|
+
<path d="M50 34V72" stroke="#7B91AC" stroke-width="1.5"/>
|
|
17
|
+
<g stroke="#4C6583" stroke-width="1.25">
|
|
18
|
+
<path d="M26 43C32 40 39 41 45 44M26 52C32 49 38 50 44 53M26 61C32 58 38 59 43 62"/>
|
|
19
|
+
<path d="M55 44C61 41 68 40 74 43M56 53C62 50 68 49 74 52M57 62C63 59 69 58 74 61"/>
|
|
20
|
+
</g>
|
|
21
|
+
<g transform="translate(-10 0) rotate(7 55 50)">
|
|
22
|
+
<path d="M44 71C47 66 50 58 55 48C61 36 71 26 81 22C79 30 73 40 65 49C60 55 57 60 55 64Q52 69 44 71Z" fill="url(#quill)"/>
|
|
23
|
+
<path d="M48 67C53 59 60 47 71 33" stroke="#183458" stroke-width="1.35"/>
|
|
24
|
+
</g>
|
|
25
|
+
<path d="M194 70C212 68 230 68 248 70C266 72 284 72 302 70" stroke="#5D7FAA" stroke-width="2"/>
|
|
26
|
+
</g>
|
|
27
|
+
<g font-family="Georgia, 'Times New Roman', serif" font-size="38" font-weight="700" letter-spacing="-1">
|
|
28
|
+
<text x="95" y="62" fill="#D9E2ED">Open</text>
|
|
29
|
+
<text x="192" y="62" fill="url(#wordmark)">Write</text>
|
|
30
|
+
</g>
|
|
31
|
+
</svg>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="312" height="100" viewBox="0 0 312 100" fill="none" role="img" aria-labelledby="logo-title logo-description">
|
|
2
|
+
<title id="logo-title">OpenWrite</title>
|
|
3
|
+
<desc id="logo-description">An open book and quill beside the OpenWrite wordmark. Light background version.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="quill" x1="46" y1="70" x2="80" y2="22" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop stop-color="#2464C6"/>
|
|
7
|
+
<stop offset="1" stop-color="#244FA8"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="wordmark" x1="192" y1="34" x2="302" y2="62" gradientUnits="userSpaceOnUse">
|
|
10
|
+
<stop stop-color="#2464C6"/>
|
|
11
|
+
<stop offset="1" stop-color="#244FA8"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
</defs>
|
|
14
|
+
<g stroke-linecap="round" stroke-linejoin="round">
|
|
15
|
+
<path d="M20 36C20 28 32 25 50 34C68 25 80 28 80 36V70C80 78 68 81 50 72C32 81 20 78 20 70V36Z" fill="#F1F5FB" stroke="#7087A3" stroke-width="2"/>
|
|
16
|
+
<path d="M50 34V72" stroke="#7087A3" stroke-width="1.5"/>
|
|
17
|
+
<g stroke="#9CABC0" stroke-width="1.25">
|
|
18
|
+
<path d="M26 43C32 40 39 41 45 44M26 52C32 49 38 50 44 53M26 61C32 58 38 59 43 62"/>
|
|
19
|
+
<path d="M55 44C61 41 68 40 74 43M56 53C62 50 68 49 74 52M57 62C63 59 69 58 74 61"/>
|
|
20
|
+
</g>
|
|
21
|
+
<g transform="translate(-10 0) rotate(7 55 50)">
|
|
22
|
+
<path d="M44 71C47 66 50 58 55 48C61 36 71 26 81 22C79 30 73 40 65 49C60 55 57 60 55 64Q52 69 44 71Z" fill="url(#quill)"/>
|
|
23
|
+
<path d="M48 67C53 59 60 47 71 33" stroke="#EAF2FF" stroke-width="1.35"/>
|
|
24
|
+
</g>
|
|
25
|
+
<path d="M194 70C212 68 230 68 248 70C266 72 284 72 302 70" stroke="#809BBE" stroke-width="2"/>
|
|
26
|
+
</g>
|
|
27
|
+
<g font-family="Georgia, 'Times New Roman', serif" font-size="38" font-weight="700" letter-spacing="-1">
|
|
28
|
+
<text x="95" y="62" fill="#172435">Open</text>
|
|
29
|
+
<text x="192" y="62" fill="url(#wordmark)">Write</text>
|
|
30
|
+
</g>
|
|
31
|
+
</svg>
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
- insert:
|
|
2
|
+
- id: openwrite-bundle
|
|
3
|
+
name: dsh-openwrite
|
|
4
|
+
- id: openwrite-bridge
|
|
5
|
+
name: dsh-openwrite/bridge
|
|
6
|
+
config:
|
|
7
|
+
mode: managed
|
|
8
|
+
- id: studio-panel
|
|
9
|
+
name: ./packages/studio-panel/lib/index.js
|
|
10
|
+
- id: openwrite-dog
|
|
11
|
+
name: ./vendor/dsh-dog/lib/index.js
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# 模型测试:章节与大纲
|
|
2
|
+
|
|
3
|
+
在「任务 → 模型测试」先选择测试任务,再选择生成模型和评审模型。
|
|
4
|
+
|
|
5
|
+
配置页会先显示项目就绪状态。已有正文必须具有有效的接纳基线和当前事实;缺失或过期时会说明原因并禁用开始按钮。测试不会代替作者建立基线或接纳正文。若运行途中失败,后台任务会保留具体错误说明。
|
|
6
|
+
|
|
7
|
+
## 章节写作
|
|
8
|
+
|
|
9
|
+
- 「推荐下一章」保留 `next` 语义;下拉列表同时提供真实章纲的 ID、标题和正文状态,可选择其他已规划的待写章。
|
|
10
|
+
- 「输入章节 ID」适合直接定位长大纲中的条目。ID 必须对应可测试章纲;错误 ID 不会静默替换成下一章。
|
|
11
|
+
- 历史章或中间缺章若早于当前正文进度,暂时禁用并说明原因。当前全书事实不能作为历史章的章前状态;本次没有伪造历史事实快照。
|
|
12
|
+
- 保留真实框架和裸写诊断两种模式,以及单章目标字数。
|
|
13
|
+
|
|
14
|
+
## 大纲设计
|
|
15
|
+
|
|
16
|
+
- 起点采用全书章号,包含起始章。例如从第 11 章开始设计 3 章,范围就是第 11–13 章。
|
|
17
|
+
- 默认接续现有大纲末尾;可以切换为指定起始章。一次设计 1–20 章,默认 3 章;起点必须晚于现有正文进度,结束章号最多 100000。
|
|
18
|
+
- 大纲使用真实规划器生成连续章纲,再验证结构与编号范围,保存独立候选并进行大纲专项评审。
|
|
19
|
+
- 大纲数量与章节目标字数相互独立。切换任务不会把字数误传为规划数量,也不会沿用裸写诊断模式。
|
|
20
|
+
- 结果分别保留请求范围和实际验证通过的产出范围;没有验证通过的章数显示未知,不根据目标数量补齐。
|
|
21
|
+
|
|
22
|
+
## DAG 配置与执行证据
|
|
23
|
+
|
|
24
|
+
`GET /api/benchmarks/options` 是可选目标、任务能力、限制和 DAG 的权威来源。前端不自行拼接另一套执行依赖。
|
|
25
|
+
|
|
26
|
+
- 章节框架使用章节写作和完整章节评审流程;裸写诊断使用对应的简化写作路径。
|
|
27
|
+
- 大纲使用规划上下文、章纲生成、结构与范围验证、隔离产物保存和专项评审;评审排除正文文风、对白自然度等不适用检查,保留适用的结构、人物、情节、连贯、正典与安全检查。
|
|
28
|
+
- 可展开「智能 DAG 配置」查看节点和依赖。历史记录保存当次配置,之后切换任务不会改写旧配置。
|
|
29
|
+
- 「DAG 执行与证据」展示候选和各评审分支的实际节点状态、依赖、证据路径与摘要。未执行、失败、跳过和部分完成保持各自状态;流程结束不等于质量通过。
|
|
30
|
+
- 测试 DAG 保存在 benchmark 隔离运行中,不替换全局 DoG 或锁定的标准章节评审蓝图。
|
|
31
|
+
|
|
32
|
+
每个生成模型、重复轮次和评审模型组合使用隔离运行记录,正式大纲和正文不会被测试覆盖。失败候选不进入后续评审;前置依赖未完成时不能启动后继节点。
|
|
33
|
+
|
|
34
|
+
## 工具调用
|
|
35
|
+
|
|
36
|
+
`novel_model_benchmark` 增加 `action: "options"`,可先读取可选章节和权威 DAG。
|
|
37
|
+
|
|
38
|
+
大纲提交示例:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"action": "run",
|
|
43
|
+
"task_type": "outline",
|
|
44
|
+
"outline_start_chapter": 11,
|
|
45
|
+
"outline_chapter_count": 3,
|
|
46
|
+
"execution_mode": "framework",
|
|
47
|
+
"writer_profile_ids": ["已配置的生成模型 ID"],
|
|
48
|
+
"reviewer_profile_ids": ["已配置的评审模型 ID"],
|
|
49
|
+
"repeats": 1,
|
|
50
|
+
"concurrency": 1
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
一个评审单元可能包含多个模型调用;界面的候选和评审数量不是底层 API 调用次数。实际模型用量与费用仍以服务端记录为准。
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# 小说工具成本比较方法
|
|
2
|
+
|
|
3
|
+
本文件只定义可复现的测量步骤。UTF-8 工具声明字节数 **不是** tokenizer token,也不是账单费用。没有作者在本会话明确提供的凭据时,真实服务商一行记为 `not-run`。
|
|
4
|
+
|
|
5
|
+
## 离线(默认,不调用模型)
|
|
6
|
+
|
|
7
|
+
在隔离环境执行:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npm --prefix packages/openwrite-bridge run build
|
|
11
|
+
node --test packages/openwrite-bridge/scripts/tool-policy.test.mjs
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`real dsh tool registry isolates 90 tools` 会打印两行 JSON:
|
|
15
|
+
|
|
16
|
+
| 字段 | 含义 | 不是什么 |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| `measurement: native-tool-schema` 的 `utf8Bytes` | `JSON.stringify(tools)` 的 UTF-8 字节 | 不是 tokenizer token |
|
|
19
|
+
| `measurement: ptc-presentation` 的 `schemaBytes` | PTC 传输声明的 UTF-8 字节 | 不是缓存命中 |
|
|
20
|
+
| `sdkBytes` | 注入到 system prompt 的 SDK 文本字节 | 不是费用 |
|
|
21
|
+
| `tokenizer: not-measured` | 本仓库不内置某家 tokenizer | 不得改写成已测 token |
|
|
22
|
+
|
|
23
|
+
同一套检查还断言:普通预设 `novel_*` 为 0;创作预设为 90 且不随 PTC 另一 scope 改变。
|
|
24
|
+
|
|
25
|
+
要对比「请求大小」,把一次真实 `tools.schemas(agent)` 或 PTC `wireSchemas` 的 JSON 写入文件后对体积做 `wc -c` / SHA-256。这仍是请求体字节,不是 token。
|
|
26
|
+
|
|
27
|
+
## 真实服务商(需明确授权)
|
|
28
|
+
|
|
29
|
+
仅当作者在当前会话提供密钥,并且同意产生费用时执行。不要从聊天记录、临时文件或其他应用配置里找密钥。
|
|
30
|
+
|
|
31
|
+
1. 使用同一创作预设、同一章节、同一提示,分别跑 native 与 PTC(若宿主支持)。
|
|
32
|
+
2. 记录:HTTP 请求体字节、服务商返回的 `usage`(prompt/completion/cache 读写)、账单金额、缓存命中字段(若有)。
|
|
33
|
+
3. 取消一次生成:确认不再调度新请求,已完成候选与用量保留;若服务商请求仍在途,界面保持「取消中」,不得记为已撤回。
|
|
34
|
+
4. 报告分成两块:`offline` 与 `provider`。缺凭据时 `provider.status = not-run`。
|
|
35
|
+
|
|
36
|
+
## 本任务状态
|
|
37
|
+
|
|
38
|
+
- 离线 schema 字节:由 tool-policy 测试每次打印。
|
|
39
|
+
- 真实 tokenizer / 缓存命中 / 费用:`not-run`(无本会话授权的模型凭据)。
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# 工程结构与开发文档
|
|
2
|
+
|
|
3
|
+
[返回首页](../README.md) · [安装指南](INSTALL.md)
|
|
4
|
+
|
|
5
|
+
为兼容现有安装、审稿产物和浏览器草稿,内部 npm scope、Schema 版本与存储键继续使用
|
|
6
|
+
`@dsh-novel/*` 和 `dsh-novel.*`;这些稳定标识不影响对外产品名。
|
|
7
|
+
|
|
8
|
+
评审 v2、双 DAG 与模型测试台的跨仓库目标、当前状态和续跑入口统一维护在
|
|
9
|
+
[GOAL.md](../GOAL.md)。后续 Goal 应先读取该文件,并以当前工作树和验证日志为准继续。
|
|
10
|
+
|
|
11
|
+
- **dsh** 负责 agent 编排:OpenWrite 单一创作预设、技能目录、子代理委派、长上下文压缩
|
|
12
|
+
- **OpenWrite** 负责小说领域能力:规范阅读顺序、稳定场景结构、章节流水线、六域累加评审(兼容 37 项查询)、伏笔 DAG、正典状态
|
|
13
|
+
- **OpenWrite Studio** 在本插件版本中提供无界面的小说领域 HTTP 后端;dsh 是唯一交互壳与编辑工作台
|
|
14
|
+
|
|
15
|
+
架构与职责划分见 [DESIGN.md](../DESIGN.md)。
|
|
16
|
+
|
|
17
|
+
## 组件
|
|
18
|
+
|
|
19
|
+
| 路径 | 说明 |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `packages/openwrite-bridge/` | dsh 插件:90 个 `novel_*` 工具,覆盖 Studio HTTP 动作面并提供隔离模型横评与脱敏 trace |
|
|
22
|
+
| `packages/studio-panel/` | dsh web 原生工作台:创作 / 资料 / 任务,含规范章节导航、连续审读、场景双序、正文编辑器、双 DAG、模型测试台与工具卡 |
|
|
23
|
+
| `presets/openwrite/` | OpenWrite 全流程 agent 预设(规划/资产/写章/评审/修订) |
|
|
24
|
+
| `scripts/install.sh` | 构建插件、安装预设到 `~/.dsh/.agent-presets/`、插件装进 dsh profile |
|
|
25
|
+
| `scripts/dev.sh` | 一键启动 OpenWrite Studio + dsh web |
|
|
26
|
+
| `scripts/verify.sh` | 一键集成验证(服务、领域代理、失效快照、本地编辑器资源、无 iframe) |
|
|
27
|
+
| `conductor/` | Python 编排器:无人值守连续写章 → 六域评审 → 修订/应用/复评闭环(走 OpenWrite 后台任务系统;详见 DESIGN.md §6) |
|
|
28
|
+
|
|
29
|
+
## 插件开发与维护
|
|
30
|
+
|
|
31
|
+
建立方法、官方资料、版本升级、安装更新和回退流程见
|
|
32
|
+
[维护手册](PLUGIN_MAINTENANCE.md)。本轮工程维护与模型工作台回归证据见 [GOAL.md](../GOAL.md)。
|
|
33
|
+
|
|
34
|
+
[标准章节审稿 DAG](REVIEW_DAG_FRAMEWORK.md):一次定义、逐章实例化的六域 37 项审稿框架。
|
|
35
|
+
开源写作软件、AI 工具和编辑器插件的对照,以及当前产品差距与验收建议,见
|
|
36
|
+
[小说工具调研与改进清单](OPEN_SOURCE_NOVEL_AUDIT.md)。
|
|
37
|
+
用户指定的七个项目的固定版本、源码实现和改进优先级,见
|
|
38
|
+
[七项目专项对照](TARGETED_NOVEL_PROJECT_REVIEW.md)。
|
|
39
|
+
七个框架的社区/源码/测试静态统计、功能成熟度矩阵、各自优势和 OpenWrite 的相对位置,见
|
|
40
|
+
[框架优势与统计](FRAMEWORK_ADVANTAGES.md)。
|
|
41
|
+
基于现状的实施顺序、跨仓库分工、依赖与验收条件见
|
|
42
|
+
[插件完善计划](IMPROVEMENT_PLAN.md);实际完成状态继续记录在 [GOAL.md](../GOAL.md)。
|
|
43
|
+
S1–S6 之后对照七个外部项目的计划/进行中/已完成,见
|
|
44
|
+
[学习与完善进度](LEARNING.md)(示例书不在目标内)。
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
npm run check:plugin # 构建、doctor、生命周期、预设、smoke、epochs、组件测试
|
|
48
|
+
npm run check # 额外校验相邻 OpenWrite 的共享 contracts
|
|
49
|
+
npm run doctor -- --profiles # 只读核对本机 web/headless 是否链接本工作树
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`check:plugin` 不需要服务、小说或模型凭据,GitHub Actions 也执行此门禁。
|
|
53
|
+
真实系统另跑 `scripts/verify.sh` 和 `npm run test:e2e`;E2E 跳过不算运行时通过。
|
|
54
|
+
|
|
55
|
+
## DoG 集成
|
|
56
|
+
|
|
57
|
+
`scripts/install.sh` 默认自动获取固定的 `dsh-dog v1.2.0`,保存到
|
|
58
|
+
`$DSH_HOME/extensions/dsh-dog`,完成构建并只挂载到 web profile;重复运行会复用该目录。
|
|
59
|
+
如需使用已有工作树,可传入 `DSH_DOG_DIR=/path/to/dsh-dog`;明确不安装时设置
|
|
60
|
+
`DSH_DOG_AUTO_INSTALL=0`。
|
|
61
|
+
|
|
62
|
+
安装器会在缺少 `dog:` 配置时写入安全兜底值。DoG v1.2 优先使用发起调用的 dsh 会话
|
|
63
|
+
Workspace,所以切换作品会自动切换评审/交付图根目录,无需修改 `workspaceRoot` 或重启。
|
|
64
|
+
`novel_review_chapter` 和后台章节评审完成时会自动实例化标准章节审稿 DAG;DoG 只查询
|
|
65
|
+
已物化产物,不会重复调用模型。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# DSH STORE 接入
|
|
2
|
+
|
|
3
|
+
OpenWrite 是一个完整的小说创作插件套件。商城安装目标是仓库根包 `dsh-openwrite`,不是其中的开发子包。
|
|
4
|
+
|
|
5
|
+
## 唯一安装目标
|
|
6
|
+
|
|
7
|
+
在商城申请中填写:
|
|
8
|
+
|
|
9
|
+
- GitHub repository:`https://github.com/LiPu-jpg/Openwrite`
|
|
10
|
+
- Plugin path (optional):`.`(显式填写,不能留空让扫描器猜测)
|
|
11
|
+
- manifestPath:`package.json`
|
|
12
|
+
- Bundle Patch:`cordis.patch.yml`
|
|
13
|
+
|
|
14
|
+
根包统一加载 `openwrite-bundle`、`openwrite-bridge`、`studio-panel`、`openwrite-dog`。这些既有 ID 保持稳定。`packages/openwrite-bridge`、`packages/studio-panel` 是内部开发包,不应和根包一起登记到同一个 Profile,也不需要删除它们或拆成独立商城条目。
|
|
15
|
+
|
|
16
|
+
源码安装必须固定到完整 Commit;`prepare` 会自包含构建三个内部插件,包含 Core wheel、编辑器静态资源、预设和许可证,不依赖相邻源码。构建授权仍遵循用户的 pnpm 设置。普通用户继续优先使用已验收的 GitHub Release `.tgz`,见 README。
|
|
17
|
+
|
|
18
|
+
## 兼容声明与证据
|
|
19
|
+
|
|
20
|
+
根 `package.json` 的 `dsh.compatibility.dshReleases` 是精确版本声明;没有实际验证的版本保持 `unknown`。Node.js 下限是 22.19.0,完整基础平台矩阵使用 Node 24,Node 22.19/26 作兼容检查;系统与架构限制见安装指南。
|
|
21
|
+
|
|
22
|
+
本机 macOS arm64 / Node 24.15 使用 0.2.7 运行代码对 alpha.1 完成了隔离安装、启动、后端初始化、恢复、回退与卸载验证;新版元数据及正式产物另由下述 CI 门禁验证。
|
|
23
|
+
|
|
24
|
+
alpha 浏览器验收进一步发现 persona 配置由 `text` 改成了必填 `prefix`;预设使用 YAML 锚点将同一份身份文本提供给两个字段,并以两版实际 Config / apply 验证身份只注册一次。
|
|
25
|
+
|
|
26
|
+
默认宿主仍是 `0.1.2-rc.1`。商城当前滚动窗口还包含 alpha,所以额外验证 `0.1.5-alpha.1`,并保留 `0.1.3-alpha.1`、`0.1.3-alpha.2` 为未知。这不自动升级用户宿主,也不承诺整个 alpha 范围都兼容。
|
|
27
|
+
|
|
28
|
+
2026-09-09,从官方 npm Registry 直接安装 `@deepseek-ai/dsh@0.1.5-alpha.1` 时,上游范围依赖选中了正在发布的 alpha.2,其中 `@deepseek-ai/dsh-tool-pwsh-persistent@^0.1.5-alpha.2` 当时缺失,安装失败(ETARGET)。兼容测试使用 npm 的 `--before=2026-09-09T00:00:00Z` 解析 alpha.1 发布时的依赖,并保留解析锁。没有修改官方包源码或用 replacements/overrides 冒充官方组件。此证据仅适用于报告中的宿主依赖图,不代表后续浮动依赖安装也通过。
|
|
29
|
+
|
|
30
|
+
可重复执行的隔离验证:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
npm install --prefix .tmp-dsh-alpha @deepseek-ai/dsh@0.1.5-alpha.1 --before=2026-09-09T00:00:00Z --registry=https://registry.npmjs.org
|
|
34
|
+
node scripts/release-smoke.mjs dsh-openwrite-<version>.tgz --host-cli=.tmp-dsh-alpha/node_modules/@deepseek-ai/dsh/lib/bin.js
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
不要把 `<version>` 原样复制;使用待验收的真实包路径。脚本创建临时 DSH_HOME、配置和作品注册表,不读取真实凭据、不调用模型。它验证安装、重复安装、其他插件共存、宿主服务版本、后端准备与认证、中文目录初始化、恢复、失败升级与回退、卸载保留数据;最终报告绑定包 SHA-256 和宿主版本。CI 另执行实际浏览器启动、空会话入口与作品创建,不用页面 HTTP 200 代替这些验证。
|
|
38
|
+
|
|
39
|
+
`Release artifact validation` 增加独立 alpha.1 Linux/Node 24 任务并保留宿主依赖锁。稳定版原生六平台和源码安装门禁仍保留;最终聚合要求 alpha 与稳定版测试同一个产物。未运行的系统/模型测试不能计为通过。以实际工作流报告为准,兼容声明不是安全审计证明。
|
|
40
|
+
|
|
41
|
+
## 权限与安装影响
|
|
42
|
+
|
|
43
|
+
- `prepare`:仅源码安装构建插件,声明在 manifest 中;预编译包已有运行资源。
|
|
44
|
+
- 文件:读写已绑定作品目录;托管环境、缓存和管理记录位于 `$DSH_HOME/openwrite/`,版本化预设位于 `$DSH_HOME/.agent-presets/`。
|
|
45
|
+
- 网络:环境准备从清单中固定来源下载并校验 uv/Python;依赖按锁文件安装。用户发起模型任务时访问其配置的服务。
|
|
46
|
+
- 子进程:启动插件管理的 uv/Python 和回环后端,退出/卸载仅清理自己的进程。
|
|
47
|
+
- 凭据:模型服务配置由宿主管理;准备环境的子进程使用允许列表环境,不继承无关 API Key。工具策略不是操作系统沙箱。
|
|
48
|
+
- 卸载保留作品、凭据和历史;缓存清理是单独操作。旧开发安装按安装指南先备份并迁移,不能同时挂载新旧包。
|
|
49
|
+
|
|
50
|
+
这些实际能力包括文件写入、网络、子进程和源码构建。不能为了低风险自动收录而隐藏它们、删除核心能力或伪造无权限声明;商城可能需要进一步审核或只提供外部安装入口。目录静态预检、可安装状态、运行验收是不同结果。
|
|
51
|
+
|
|
52
|
+
## 静态扫描范围
|
|
53
|
+
|
|
54
|
+
商城扫描器将 DTO 测试中的长英文占位字符串识别为凭据字面量;测试现使用明确的短假值 `test-only` / `test-embedding`,继续验证敏感字段不会进入 DTO。此处没有真实密钥,也没有删除测试。扫描上限仍是 150 个源码文件,仓库文件更多时报告保持“扫描不完整”;子进程和编辑器运行时代码能力继续披露,不能把有界扫描称为完整安全审核。
|
|
55
|
+
|
|
56
|
+
## 复检
|
|
57
|
+
|
|
58
|
+
对应 [作者修复请求 #682](https://github.com/AI-Scarlett/DSH-Store/issues/682)。新版固定 Commit 合入默认分支后,用明确的根目录提交预检,并核对商城最新结果。只在其公开结果明确通过后称为“已收录”;提交成功不能冒充审核成功。
|